/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.dao;

import br.com.classes.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class UsuarioDao extends Conecta {

    Connection con = null;

    public UsuarioDao() {
        con = Conecta.getConnection();
    }

    public void CadastrarUsuario(Usuario u) throws Exception {

        String sql = ("insert into usuario values(null,?,?,?,?)");
        PreparedStatement prep = con.prepareStatement(sql);
        prep.setString(1, u.getNome_usuario());
        prep.setString(2, u.getLogin());
        prep.setString(3, u.getSenha());
        prep.setInt(4, u.getNivel());
        prep.execute();
    }

    public void DeletarUsuario(Usuario u) throws Exception {

        String sql = ("delete from usuario where nome_usuario = ?");
        PreparedStatement prep = con.prepareStatement(sql);
        prep.setString(1, u.getNome_usuario());
        prep.execute();
    }

    public List<Usuario> ListarUsuario() {

        List<Usuario> lista = new ArrayList<Usuario>();
        try {
            String sql = "select * from usuario";
            PreparedStatement stmt = con.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {
                Usuario usu = new Usuario();
                usu.setCod_usuario(rs.getInt("cod_usuario"));
                usu.setNome_usuario(rs.getString("nome_usuario"));
                usu.setLogin(rs.getString("login"));
                usu.setNivel(rs.getInt("nivel"));
                lista.add(usu);
            }
        } catch (SQLException ex) {
        }
        return lista;
    }

    public void AlterarUsuario(Usuario u) {
     
        try {
            String sql = "update usuario set nome_usuario=?,login=?,senha=? where cod_usuario=?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, u.getNome_usuario());
            ps.setString(2, u.getLogin());
            ps.setString(3, u.getSenha());
            ps.setInt(4, u.getCod_usuario());
            ps.execute();

        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }

    public Usuario PesquisarUsuario(int cod_usuario) {
    
        Usuario u = null;
        try {
            String sql = "select * from usuario where cod_usuario=?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setInt(1, cod_usuario);
            ResultSet rs = ps.executeQuery();

            while (rs.next()) {
                u = new Usuario();
                u.setNome_usuario(rs.getString("nome_usuario"));
                u.setLogin(rs.getString("login"));
                u.setSenha(rs.getString("senha"));
                u.setNivel(rs.getInt("nivel"));
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        return u;
    }

    public int UltimoCodUsu() {
        int cod = 0;
        try {
            String sql = "select max(cod_usuario) + 1 as codigo from usuario";
            PreparedStatement ps = con.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();

            while (rs.next()) {
                cod = rs.getInt("codigo");
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        return cod;
    }

    public List<Usuario> ProcurarSenhaLogin(String senha, String login2, int n) {

        List<Usuario> lista = new ArrayList<Usuario>();
        try {

            String sql = "select * from usuario where login = ? and senha = ? and nivel=?";
            PreparedStatement stmt = con.prepareStatement(sql);
            stmt.setString(1, login2);
            stmt.setString(2, senha);
            stmt.setInt(3, n);
            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {

                Usuario u = new Usuario();
                u.setLogin(rs.getString("login"));
                u.setSenha(rs.getString("senha"));
                u.setNivel(rs.getInt("nivel"));
                u.setCod_usuario(rs.getInt("cod_usuario"));
                lista.add(u);
            }
        } catch (SQLException ex) {
        }
        return lista;
    }

    public List<Usuario> BuscarLimite(int num) {

        List<Usuario> lista = new ArrayList<Usuario>();
        try {
            String sql = "select * from usuario limit ?,10";
            PreparedStatement stmt = con.prepareStatement(sql);
            stmt.setInt(1, num);
            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {
                Usuario u = new Usuario();
                u.setCod_usuario(rs.getInt("cod_usuario"));
                u.setNome_usuario(rs.getString("nome_usuario"));
                u.setLogin(rs.getString("login"));
                u.setSenha(rs.getString("senha"));
                u.setNivel(rs.getInt("nivel"));
                lista.add(u);
            }
        } catch (SQLException ex) {
        }
        return lista;
    }

    public List<Usuario> ProcurarUsuarioLetra(String usuario) {

        List<Usuario> lista = new ArrayList<Usuario>();
        try {

            String sql = "select * from usuario where nome_usuario like ?";
            PreparedStatement stmt = con.prepareStatement(sql);
            stmt.setString(1, "%" + usuario + "%");
            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {

                Usuario u = new Usuario();
                u.setCod_usuario(rs.getInt("cod_usuario"));
                u.setNome_usuario(rs.getString("nome_usuario"));
                u.setLogin(rs.getString("login"));
                u.setSenha(rs.getString("senha"));
                u.setNivel(rs.getInt("nivel"));
                lista.add(u);
            }

        } catch (SQLException ex) {
        }
        return lista;
    }
}
